keepalived 和 lvs 的结合配置文件详解

        /export/servers/keepalived/conf/keepalived.conf配置文件详解:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
! Configuration File for keepalived
#全局配置
global_defs {
notification_email { #设置报警邮件地址,每行一个,(如何要开启邮件报警,需要开启本机的sendmail服务)
lihuiyw@jd.com
}
notification_email_from lihuiyw@jd.com #设置邮件的发送地址
smtp_server mail.jd.com #设置邮件的smtp server地址
smtp_connect_timeout 30 #设置连接smtp server的超时时间
router_id LVS_DEVEL #表示keepalived服务器的一个标识,是发邮件时显示在邮件主题中的信息
}
#keepalived的VRRPD配置,是所有keepalived配置的核心
#VRRP实例配置
vrrp_instance VIP_142 #是VRRP实例开始的标识,后跟VRRP实例名称
{
state MASTER #keepalived的角色,MASTER主,BACKUP备
interface eth0 #用于指定HA监测网络的接口
virtual_router_id 142 #虚拟路由标识,这个标识是一个数字,同一个VRRP实例使用唯一的一个标识,即在同一个vrrp_instance下,MASTER和BACKUP必须是一致的!
priority 100 #权重优先级
advert_int 2 #用于设定master和backup主机之间同步检查的时间间隔,单位是秒
garp_master_delay 10 #用于切换到master状态后延时进行Gratuitous arp请求的时间
smtp_alert #表示是否开启邮件通知(用全局区域的邮件设置来发通知)
authentication #主备之间进行通信的验证类型和密码:验证类型主要有PASS和AH两种,一个在vrrp_instance下,MASTER和backup必须使用相同的密码才可以通信
{
auth_type PASS
auth_pass 123456
}
#virtual_ipaddress用于设置虚拟ip地址,可以设置多个vip,每行一个,
virtual_ipaddress
{
10.95.0.200/24
}
track_interface #用于设置一些额外的网络监控接口,其中任何一个网络接口出现故障,keepalived都会进去fault状态!
{
eth0
}
nopreempt #设置不抢占功能,只能在backup上使用,知道机器有故障了才切换,
preemtp_delay 300 #用于设置抢占的延时时间,(例:开启启动没必要抢占)
}
#以下是lvs的主要主要配置信息,主要实现lvs的ip包转发功能!
virtual_server 10.95.0.200 80 #虚拟ip和端口
{
delay_loop 6 #设置健康检查的时间间隔
lb_algo wrr #设置负载调度算法
lb_kind DR #设置lvs的模式
persistence_timeout 60 #会话保持时间,单位秒
protocol TCP #ip包转发协议,有TCP和UDP两种
real_server 10.95.0.143 80 #real server 的ip
{
weight 3 #权重
TCP_CHECK #健康检查
{
connect_timeout 10 #表示无响应超时时间
nb_get_retry 3 #表示重连次数
delay_before_retry 3 #表示重试间隔
connect_port 80 #表示端口
}
}
real_server 10.95.0.144 80
{
weight 3
TCP_CHECK
{
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}

        健康监测应许多种检查方式,常见的有,HTTP_GET,SSL_GET,TCP_CHECK,SMTP_CHECK,MISC_CHECK.

1
2
3
4
5
6
TCP_CHECK {
conetct_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}

        connect_port:健康检查的端口,如果不指定,默认是real_server指定的端口

        connect_timeout:表示无响应超时时间,单位是秒,这里是3s

        nb_get_retry:表示重试次数,这里是3ci

        delay_before_retry:表示重试间隔,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HTTP_GET |SSL_GET
{
url{
path /index.html #指定url信息
digest e6owjfdsjfalsjdfsalkf30wfdsfjwqe
#ssl检查后的摘要信息,这些摘要信息可以通过genhash命令工具获取,
#例:genhash -s 192.168.12.80 -p 80 -u /index.html
status_code 200
}
connect_port 80
bindto 192.168.31.128 #表示通过此地址来对发送请求对服务器进行健康检查
nb_get_retry 3
delay_before_retry 2
}